<?php
require_once(MODULESPATH . "core/d.object.class.php");
require_once(MODULESPATH . "accounts/dataaccess/d.accounts.inc.php");

/**
 * 账户系统数据层外部账户映射类。
 */
class DMapping extends DObject implements IDMapping {
    /*- IDMapping 接口实现 START -*/
    /*- IInjectEnable 接口实现 START -*/
    /**
     * 设置属性值。
     */
    public function __set($prop, $val){
        $this->$prop = $val;
    }
    /*- IInjectEnable 接口实现 END -*/
    
    /**
     * 根据外部映射账号，获取系统用户ID。
     * @param Int $mappingId 外部账号。
     * @param String $type 外部账户映射类型。
     * @return 系统用户ID(未获取到返回-1)。
     */
    public function getUidByMapping($mappingId, $type){
        $result = -1;
        $sql = "SELECT max(account_id) FROM  `accounts_mapping` WHERE  `mapping_account_id` =  '$mappingId' AND  `mapping_type` =  " . COMBINATION_DEFAULT_WEIGHT;
        try{
            $o = $this->dao->getVar($sql);
            if($o){
                $result = $o;
            }
        }catch(Exception $ex){
        }
        return $result;
    }
    
    /**
     * 根据系统用户ID，获取外部映射账号。
     * @param Int $uid 外部账号。
     * @param String $type 外部账户映射类型。
     * @return 外部映射账号(未获取到返回-1)。
     */
    public function getMappingByUid($uid, $type){
        $result = -1;
        $sql = "SELECT max(mapping_account_id) FROM  `accounts_mapping` WHERE  `account_id` =  '$uid' AND  `mapping_type` =  '$type'";
        try{
            $o = $this->dao->getVar($sql);
            if($o){
                $result = $o;
            }
        }catch(Exception $ex){
        }
        return $result;
    }
    
    /**
     * 添加映射关系。
     * @param Int $userId 系统用户ID。
     * @param Int $mappingId 外部账号。
     * @param String $type 外部账户映射类型。
     * @return 是否添加成功。
     */                 
    public function insert($userId, $mappingId, $type){
        $result = 0;
        $sql = "insert into accounts_mapping (account_id, mapping_account_id, mapping_type, update_time, create_time) values ($userId, '$mappingId', '$type', " . time() . "," . time() . ");";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return  $result;
    }
    
    /**
     * 更新映射账号的使用时间。
     * @param Int $uid 用户编号。
     * @return 是否更新成功。
     */
    public function updateMappingTime($uid){
        $result = 0;
        $sql = "update accounts_mapping set update_time = " . time() . " WHERE  `account_id` =  '$uid';";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return  $result;
    }
    
    /**
     * 删除指定用户的映射关系。
     * @param Int $uid 用户编号。
     */
    public function deleteByUid($uid){
        $result = 0;
        $sql = "delete from accounts_mapping WHERE  `account_id` =  '$uid';";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return  $result;
    }
    /*- IDMapping 接口实现 END -*/
}
?>
